package com.cy.ppj.service.company;

import java.util.List;

import com.cy.ppj.model.PageBean;
import com.cy.ppj.model.ao.company.CompanyAddAO;
import com.cy.ppj.model.ao.company.CompanyEditAO;
import com.cy.ppj.model.ao.user.CompanyMemberAddAO;
import com.cy.ppj.model.domian.company.Company;
import com.cy.ppj.model.enums.CompanyStatus;
import com.cy.ppj.model.query.CompanyAdminQuery;
import com.cy.ppj.model.query.CompanyTeamMemberAdminQuery;
import com.cy.ppj.model.vo.CompanyAdminVO;
import com.cy.ppj.model.vo.admin.company.CompanyTeamMemberAdminVO;

public interface CompanyService {

	/**
	 * 新增渠道公司
	 * @param companyAddAO
	 */
    void addCompany(CompanyAddAO companyAddAO);

    /**
     * 编辑公司
     * @param companyEditAO
     */
    void updateCompany(CompanyEditAO companyEditAO);
    
    /**
     * 后台-查询渠道公司列表
     * @param query
     * @return
     */
    PageBean<CompanyAdminVO> selectCompanyAdminList(CompanyAdminQuery query);
    
    /**
     * 更改公司状态
     * @param companyId
     * @param companyStatus
     */
    void updateCompanyStatus(Long companyId, CompanyStatus companyStatus);
    
    /**
     * 设置渠道用户成功公司管理员
     * @param companyId
     * @param channelUserId
     */
    void setDirector(Long companyId, Long channelUserId);

    /**
     * 所有的渠道公司列表，不分页，有缓存
     * 
     * @return
     */
	List<Company> selectAllCompanyListInCache();

	/**
	 * 渠道公司新增经纪人成员用户，即经纪人绑定公司
	 * 
	 * @param companyMemberAddAO
	 */
	void addMemberUser(CompanyMemberAddAO companyMemberAddAO);

	/**
	 * 渠道公司团队成员列表
	 * 
	 * @param query
	 * @return
	 */
	PageBean<CompanyTeamMemberAdminVO> selectCompanyTeamMemberAdminList(CompanyTeamMemberAdminQuery query);
}
